package com.yeban.javase.day07.test04_reg;

import java.util.Scanner;
import java.util.regex.Pattern;

/**
 * @Desc TODO
 * @Author yeban
 * @Date 2025/10/15
 *
 * 7.密码强度校验，控制台输入字符串，判断其弱、中、强（数字+字母+特殊符号）
 */
public class Test07 {

    public static void main(String[] args) {
        System.out.print("请输入密码：");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();

        int type = checkPassword(str);
        if(type == 1){
            System.out.println("\"" + str + "\"：密码强度为弱！");
        } else if(type == 2){
            System.out.println("\"" + str + "\"：密码强度为中！");
        } else if(type == 3){
            System.out.println("\"" + str + "\"：密码强度为强！");
        } else {
            System.out.println("密码不能为空！");
        }

    }

    public static int checkPassword(String password) {
        if(password == null || password.isEmpty()) {
            return -1;
        }

        // 判断是否包含数字
        boolean hasDigit = Pattern.compile("[0-9]").matcher(password).find();

        // 判断是否包含字母
        boolean hasCase = Pattern.compile("[a-zA-Z]").matcher(password).find();

        // 判断是否包含特殊字符
        boolean hasSymbol = Pattern.compile("[^a-zA-Z0-9]").matcher(password).find();

        int type1 = hasDigit ? 1 : 0;
        int type2 = hasCase ? 1 : 0;
        int type3 = hasSymbol ? 1 : 0;
        int typeCount = type1 + type2 + type3;

        return typeCount;
    }
}
